import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import axios from 'axios'

// 创建Vue应用实例
const app = createApp(App)

// 全局注册Element Plus图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

// 配置axios默认值
axios.defaults.baseURL = '/api'
axios.defaults.timeout = 60000

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 可以在这里添加loading状态
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    // 统一错误处理
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 处理未授权错误
          break
        case 404:
          // 处理资源不存在错误
          break
        case 500:
          // 处理服务器错误
          console.error('服务器错误:', error.response.data)
          break
        default:
          console.error('请求错误:', error.response.data)
      }
    } else if (error.request) {
      console.error('网络错误，请检查您的网络连接')
    } else {
      console.error('请求配置错误:', error.message)
    }
    return Promise.reject(error)
  }
)

// 全局注入axios
app.config.globalProperties.$axios = axios

// 安装Element Plus
app.use(ElementPlus)

// 挂载应用
app.mount('#app')